package org.lmind.example.uc.api;

import java.util.Map;

/**
 * 用户中心
 * @author mian.liu
 *
 */
public interface UserCenter {
	
	/**
	 * 使用用户名和密码注册,并获取UserInfo对象
	 * @param name 唯一用户名
	 * @param password 密码
	 * @return
	 * @throws UserCenterException
	 */
	UserInfo register(String name, String password);
	
	/**
	 * 修改密码
	 * @param name 用户名
	 * @param password 密码
	 * @param newPassword 新密码
	 */
	void changePassword(String name, String password, String newPassword);
	
	/**
	 * 重置密码,将新密码发往注册时填写的邮箱
	 * @param name 用户名
	 * @param email 用户注册时填写的邮箱
	 */
	void resetPassword(String name, String email);
	
	/**
	 * 修改用户信息
	 * @param name 用户名
	 * @param password 密码
	 * @param attributes 用户信息
	 */
	void modifyUserInfo(String name, String password, Map<String, Object> attributes);
	
	/**
	 * 用户登录
	 * @param name 用户名
	 * @param password 密码
	 * @return
	 * @throws UserCenterException
	 */
	UserInfo login(String name, String password);
	
	
	/**
	 * 锁定或解锁一个用户
	 * @param name 用户名
	 * @param lock 锁定或解锁
	 */
	void changeUserLockStatus(String name, boolean lock);
}
